package main

// 1004. 最大连续1的个数 III
// 给定一个二进制数组 nums 和一个整数 k，如果可以翻转最多 k 个 0 ，则返回 数组中连续 1 的最大个数 。

func longestOnes(nums []int, k int) int {

	n := len(nums)
	res := 0
	// 滑动窗口
	var l, r int

	for r < n {
		if nums[r] == 0 {
			if k == 0 {
				for nums[l] == 1 { // 左边界移位
					l++
				}
				l++
			} else {
				k--
			}
		}
		r++
		res = max(res, r-l)
	}
	return res
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
